package file;

import java.io.*;

public class Demo5 {
    public static void main(String[] args) throws IOException {
        // 先创建一个test文件
        // File file = new File("./test.txt");
        // file.createNewFile();
        // 创建FileInputStream对象时需要抛异常

        try(InputStream inputStream = new FileInputStream("./test.txt")){
            // 只要出了try的代码块，就会自动调用close方法
            while(true){

                // 一次读一个字节
                // 此处时按照字节读取，每个字节的范围是0-255
                // int data = inputStream.read();
                // if(data == -1){
                    // 读取结束
                    // break;
                // }
                // System.out.printf("0x%x\n", data);

                // 一次读多个字节
                // 尽可能多的把数组填满（文件内容大于数组大小时）
                // 能填多少是多少（文件内容小于数组大小时）
                // 返回一个int值，表示实际使用了多少字节
                byte[] data = new byte[6];

                // 这里的data是使用参数作为方法的返回值
                // 这里的read操作是，把文件中独到的内容记录在data数组中，同时返回一个int类型的值表示一共读到了多少字节
                int n = inputStream.read(data);

                // 一次读5个字节，从数组下标为1的位置开始放置
                // 一次while循环没有读完， 下一次接着上次没读的位置继续读
                // int n = inputStream.read(data, 1, 5);

                // 返回值是-1，表示已经读完了
                if(n == -1){
                    break;
                }
                for (int i = 0; i < n; i++) {
                    System.out.printf("0x%x\n", data[i]);
                }
                System.out.println(n);
            }
        }
    }
}
